{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>交易日</th>\n",
       "      <th>合约代码</th>\n",
       "      <th>交易所代码</th>\n",
       "      <th>合约在交易所的代码</th>\n",
       "      <th>最新价</th>\n",
       "      <th>上次结算价</th>\n",
       "      <th>昨收盘</th>\n",
       "      <th>昨持仓量</th>\n",
       "      <th>今开盘</th>\n",
       "      <th>最高价</th>\n",
       "      <th>...</th>\n",
       "      <th>申买价四</th>\n",
       "      <th>申买量四</th>\n",
       "      <th>申卖价四</th>\n",
       "      <th>申卖量四</th>\n",
       "      <th>申买价五</th>\n",
       "      <th>申买量五</th>\n",
       "      <th>申卖价五</th>\n",
       "      <th>申卖量五</th>\n",
       "      <th>当日均价</th>\n",
       "      <th>业务日期</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>20200228</td>\n",
       "      <td>rb2005</td>\n",
       "      <td>SHFE</td>\n",
       "      <td></td>\n",
       "      <td>3388</td>\n",
       "      <td>3426</td>\n",
       "      <td>3419</td>\n",
       "      <td>1512736</td>\n",
       "      <td>3388</td>\n",
       "      <td>3388</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>33880.0</td>\n",
       "      <td>20200228</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>20200228</td>\n",
       "      <td>rb2005</td>\n",
       "      <td>SHFE</td>\n",
       "      <td></td>\n",
       "      <td>3386</td>\n",
       "      <td>3426</td>\n",
       "      <td>3419</td>\n",
       "      <td>1512736</td>\n",
       "      <td>3388</td>\n",
       "      <td>3389</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>33878.3</td>\n",
       "      <td>20200228</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>20200228</td>\n",
       "      <td>rb2005</td>\n",
       "      <td>SHFE</td>\n",
       "      <td></td>\n",
       "      <td>3383</td>\n",
       "      <td>3426</td>\n",
       "      <td>3419</td>\n",
       "      <td>1512736</td>\n",
       "      <td>3388</td>\n",
       "      <td>3389</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>33856.0</td>\n",
       "      <td>20200228</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>20200228</td>\n",
       "      <td>rb2005</td>\n",
       "      <td>SHFE</td>\n",
       "      <td></td>\n",
       "      <td>3385</td>\n",
       "      <td>3426</td>\n",
       "      <td>3419</td>\n",
       "      <td>1512736</td>\n",
       "      <td>3388</td>\n",
       "      <td>3389</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>33848.9</td>\n",
       "      <td>20200228</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>20200228</td>\n",
       "      <td>rb2005</td>\n",
       "      <td>SHFE</td>\n",
       "      <td></td>\n",
       "      <td>3383</td>\n",
       "      <td>3426</td>\n",
       "      <td>3419</td>\n",
       "      <td>1512736</td>\n",
       "      <td>3388</td>\n",
       "      <td>3389</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>33826.3</td>\n",
       "      <td>20200228</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 44 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "        交易日    合约代码 交易所代码 合约在交易所的代码   最新价  上次结算价   昨收盘     昨持仓量   今开盘   最高价  \\\n",
       "0  20200228  rb2005  SHFE            3388   3426  3419  1512736  3388  3388   \n",
       "1  20200228  rb2005  SHFE            3386   3426  3419  1512736  3388  3389   \n",
       "2  20200228  rb2005  SHFE            3383   3426  3419  1512736  3388  3389   \n",
       "3  20200228  rb2005  SHFE            3385   3426  3419  1512736  3388  3389   \n",
       "4  20200228  rb2005  SHFE            3383   3426  3419  1512736  3388  3389   \n",
       "\n",
       "   ...  申买价四  申买量四  申卖价四  申卖量四  申买价五  申买量五  申卖价五  申卖量五     当日均价      业务日期  \n",
       "0  ...     0     0     0     0     0     0     0     0  33880.0  20200228  \n",
       "1  ...     0     0     0     0     0     0     0     0  33878.3  20200228  \n",
       "2  ...     0     0     0     0     0     0     0     0  33856.0  20200228  \n",
       "3  ...     0     0     0     0     0     0     0     0  33848.9  20200228  \n",
       "4  ...     0     0     0     0     0     0     0     0  33826.3  20200228  \n",
       "\n",
       "[5 rows x 44 columns]"
      ]
     },
     "execution_count": 1,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import pandas as pd\n",
    "import seaborn as sns\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "stock_data = pd.read_csv('rb2005_20200228_utf8.csv')\n",
    "stock_data.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>ts_code</th>\n",
       "      <th>trade_date</th>\n",
       "      <th>close</th>\n",
       "      <th>open</th>\n",
       "      <th>high</th>\n",
       "      <th>low</th>\n",
       "      <th>pre_close</th>\n",
       "      <th>change</th>\n",
       "      <th>pct_chg</th>\n",
       "      <th>vol</th>\n",
       "      <th>amount</th>\n",
       "      <th>trade_date2</th>\n",
       "      <th>dates</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>77</th>\n",
       "      <td>000001.SH</td>\n",
       "      <td>18506.0</td>\n",
       "      <td>3410.6068</td>\n",
       "      <td>3389.7424</td>\n",
       "      <td>3410.6068</td>\n",
       "      <td>3381.7108</td>\n",
       "      <td>3395.6775</td>\n",
       "      <td>14.9293</td>\n",
       "      <td>0.4397</td>\n",
       "      <td>246999249.0</td>\n",
       "      <td>326850955.3</td>\n",
       "      <td>20200901</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>76</th>\n",
       "      <td>000001.SH</td>\n",
       "      <td>18507.0</td>\n",
       "      <td>3404.8017</td>\n",
       "      <td>3420.4693</td>\n",
       "      <td>3421.3959</td>\n",
       "      <td>3377.2111</td>\n",
       "      <td>3410.6068</td>\n",
       "      <td>-5.8051</td>\n",
       "      <td>-0.1702</td>\n",
       "      <td>261546319.0</td>\n",
       "      <td>345638982.3</td>\n",
       "      <td>20200902</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75</th>\n",
       "      <td>000001.SH</td>\n",
       "      <td>18508.0</td>\n",
       "      <td>3384.9806</td>\n",
       "      <td>3404.0319</td>\n",
       "      <td>3425.6294</td>\n",
       "      <td>3374.2634</td>\n",
       "      <td>3404.8017</td>\n",
       "      <td>-19.8211</td>\n",
       "      <td>-0.5822</td>\n",
       "      <td>255346279.0</td>\n",
       "      <td>350706563.9</td>\n",
       "      <td>20200903</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>74</th>\n",
       "      <td>000001.SH</td>\n",
       "      <td>18509.0</td>\n",
       "      <td>3355.3666</td>\n",
       "      <td>3336.4076</td>\n",
       "      <td>3360.1061</td>\n",
       "      <td>3328.5518</td>\n",
       "      <td>3384.9806</td>\n",
       "      <td>-29.6140</td>\n",
       "      <td>-0.8749</td>\n",
       "      <td>221636550.0</td>\n",
       "      <td>308179657.6</td>\n",
       "      <td>20200904</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>73</th>\n",
       "      <td>000001.SH</td>\n",
       "      <td>18512.0</td>\n",
       "      <td>3292.5907</td>\n",
       "      <td>3349.9184</td>\n",
       "      <td>3368.2446</td>\n",
       "      <td>3285.6326</td>\n",
       "      <td>3355.3666</td>\n",
       "      <td>-62.7759</td>\n",
       "      <td>-1.8709</td>\n",
       "      <td>260616567.0</td>\n",
       "      <td>357726463.9</td>\n",
       "      <td>20200907</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      ts_code  trade_date      close       open       high        low  \\\n",
       "77  000001.SH     18506.0  3410.6068  3389.7424  3410.6068  3381.7108   \n",
       "76  000001.SH     18507.0  3404.8017  3420.4693  3421.3959  3377.2111   \n",
       "75  000001.SH     18508.0  3384.9806  3404.0319  3425.6294  3374.2634   \n",
       "74  000001.SH     18509.0  3355.3666  3336.4076  3360.1061  3328.5518   \n",
       "73  000001.SH     18512.0  3292.5907  3349.9184  3368.2446  3285.6326   \n",
       "\n",
       "    pre_close   change  pct_chg          vol       amount trade_date2  dates  \n",
       "77  3395.6775  14.9293   0.4397  246999249.0  326850955.3    20200901      0  \n",
       "76  3410.6068  -5.8051  -0.1702  261546319.0  345638982.3    20200902      1  \n",
       "75  3404.8017 -19.8211  -0.5822  255346279.0  350706563.9    20200903      2  \n",
       "74  3384.9806 -29.6140  -0.8749  221636550.0  308179657.6    20200904      3  \n",
       "73  3355.3666 -62.7759  -1.8709  260616567.0  357726463.9    20200907      4  "
      ]
     },
     "execution_count": 39,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import mpl_finance\n",
    "import tushare as ts\n",
    "from matplotlib import ticker\n",
    "from matplotlib.pylab import date2num\n",
    "import numpy as np\n",
    "\n",
    "sns.set()\n",
    "# ts.set_token()\n",
    "pro = ts.pro_api('f931a511eec328e37623089e95ba30f6a8aba156d45f4e18e5645f01')\n",
    "df = pro.index_daily(ts_code='000001.SH', start_date='20200901')\n",
    "df = df.sort_values(by='trade_date', ascending=True)\n",
    "\n",
    "df['trade_date2'] = df['trade_date'].copy()\n",
    "df['trade_date'] = pd.to_datetime(df['trade_date']).map(date2num)\n",
    "df['dates'] = np.arange(0, len(df))\n",
    "df.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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LH67iRq3MyKeFxFjbq8uXbpg7NixuHjxImJiYhAbG4uysjLExcVh165d2L9/P0aNGoVOnTo5dmrIyMhA7969VS55x4gad1tEvW5EjVsrNNHi1fSGAgCxsbGIjo5GXFwcTp06hf3790Ov1193Q3n//fc1XYFEjdsZEc+LiDG3V0xMDB577DHExMQAAHbt2oWhQ4fi/vvvx+jRo/Hyyy/jt7/9LdauXYthw4YBQEAkH6LG3RZRrxtR49YM3y6U3z52u12prq52/Dxz5kwlKytLaWhoULKzs5XRo0cr//M//6OMHj1a2b17t4ol9SxR43ZGxPMiYsyecO7cOWXUqFFKbW2toiiK8u233yr79+9Xdu/erZw/f17l0nmPqHG3JOp1I2rcWqG5levPnz+Pn//85/joo48QHh6Os2fP4uzZs6irq0NcXFzAfoMTNW5nRDwvIsbcXgcPHsS+ffvws5/9DCtWrEC3bt2wePFiREdHq100rxI17raIet2IGrc/08QYr6bOnz+P0aNHo6KiAs8995wwNxRR43ZGxPMiYsztdeLECWzduhVff/01Hn/8cTz++ONqF8knRI27LaJeN6LG7c80l3iJekMRNW5nRDwvIsbcXt26dUNKSgpmzZol1Aa+osbdFlGvG1Hj9mea62rcsWMHvvvuO+FuKKLG7YyI50XEmNtLEXSVbVHjbouo142ocfszzSVeot5QRI3bGRHPi4gxE3WUqNeNqHH7M80lXkRERERapYl1vIiIiIgCARMvIiIiIh9h4kVERETkI0y8iIiIiHyEiRcRERGRjzDxIiIiIvKR/weC3i/Q9++RBgAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 720x360 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, ax = plt.subplots(figsize=(10,5))\n",
    "mpl_finance.candlestick_ochl(\n",
    "    ax=ax,\n",
    "    quotes=df[['trade_date', 'open', 'close', 'high', 'low']].values,\n",
    "    width=0.7,\n",
    "    colorup='r',\n",
    "    colordown='g',\n",
    "    alpha=0.7)\n",
    "ax.xaxis_date()\n",
    "plt.xticks(rotation=30);"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x360 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "def format_date(x,pos):\n",
    "    if x<0 or x>len(date_tickers)-1:\n",
    "        return ''\n",
    "    return date_tickers[int(x)]\n",
    "\n",
    "date_tickers = df.trade_date2.values\n",
    "fig, ax = plt.subplots(figsize=(10,5))\n",
    "ax.xaxis.set_major_formatter(ticker.FuncFormatter(format_date))\n",
    "mpl_finance.candlestick_ochl(\n",
    "    ax=ax,\n",
    "    quotes=df[['dates', 'open', 'close', 'high', 'low']].values,\n",
    "    width=0.7,\n",
    "    colorup='r',\n",
    "    colordown='g',\n",
    "    alpha=0.7)\n",
    "ax.set_title('(2020.9-)', fontsize=20);"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}